package com.company.hrmadmin.modules.service;

import com.company.hrmadmin.modules.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.company.hrmadmin.modules.entity.dto.login.ResetPasswordDTO;
import com.company.hrmadmin.modules.entity.dto.profile.UpdateAddressDTO;
import com.company.hrmadmin.modules.entity.dto.profile.UpdateCollegeDTO;
import com.company.hrmadmin.modules.entity.vo.IndexPanelVO;
import com.company.hrmadmin.modules.entity.vo.UserProfileVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * @author Xmirror
 * @description 针对表【bs_user(员工)】的数据库操作Service
 * @createDate 2022-03-18 15:38:50
 */
public interface UserService extends IService<User> {

    /**
     * 获取用户的头像路径
     *
     * @param fileName 文件名称
     * @param response 相应对象
     */
    void getAvatar(String fileName, HttpServletResponse response);

    /**
     * 上传头像
     *
     * @param avatarImage 头像图片
     * @return 上传成功返回新的URL
     */
    String uploadAvatar(MultipartFile avatarImage, String token);

    /**
     * 获取用户个人页面的详情信息
     *
     * @param userId 用户ID
     * @return 用户个人信息VO
     */
    UserProfileVO getUserProfile(Integer userId);

    /**
     * 根据用户CollegeDTO对象修改个人院校信息
     *
     * @param dto DTO对象
     * @return 修改的数值
     */
    Integer setUserCollege(UpdateCollegeDTO dto);

    /**
     * 根据用户DTO修改个人地址信息
     *
     * @param dto dto对象
     * @return 修改的数值
     */
    Integer setUserAddress(UpdateAddressDTO dto);

    /**
     * 根据用户ID获取首页控制面板信息
     *
     * @param userId 用户ID
     * @return 首页控制面板信息
     */
    IndexPanelVO getIndexPanel(Integer userId);

    /**
     * 向邮箱发送忘记密码的验证码邮件
     *
     * @param email 目标邮箱
     * @return 成功返回1
     */
    Integer sendVerify(String email);

    /**
     * 用户重置密码的DTO
     * @param dto dto对象，包含邮箱、两次新密码、验证码
     * @return 修改成功返回 >=1 的整数，失败返回0
     */
    Integer resetPassword(ResetPasswordDTO dto);

}
